package vue.FenetrePartie;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;

import modele.Unite.Archer;
import modele.Unite.Geant;
import modele.Unite.Gobelin;
import modele.Unite.Soldat;

public class MagasinAttaque extends JPanel implements ActionListener {
	
	private static final long serialVersionUID = 1L;
	private MapAdversaire panneauMapAdversaire;
	private Panneau p;

	private JButton boutonSoldat;
	private JButton boutonArcher;
	private JButton boutonGobelin;
	private JButton boutonGeant;

	/**
	 * 
	 * @param map, c'est le panneau contenant notre village
	 * @param p, c'est le panneau principal qui contient les 4 panneaux de la partie.
	 * 
	 * Ce panneau se situe en bas à gauche comme le panneau Magasin, celui ci va nous permettre d'ajouter des unités quand le joueur aura selectioné
	 * le batiment camp militaire et qu'il voudra former des unités
	 */
	public MagasinAttaque(MapAdversaire map, Panneau p)
	{
		this.panneauMapAdversaire = map;
		this.p = p;
		this.setSize(500, 130);
		this.setLocation(0,495);
		
		this.setLayout (null);
		this.setBackground(Color.GRAY);
		this.setBorder(BorderFactory.createLineBorder(Color.BLACK));
		
		this.setVisible(false);
		
		this.p.add(this);
		
		this.addMenuUnite();	
	}
	
	public void rafraichir()
	{
		if(this.p.getControleur().getJoueur().getNbUniteSoldat()==0)
		{
			this.boutonSoldat.setEnabled(false);
		}
		else
		{
			this.boutonSoldat.setEnabled(true);
		}		
		
		if(this.p.getControleur().getJoueur().getNbUniteArcher()==0)
		{
			this.boutonArcher.setEnabled(false);
		}
		else
		{
			this.boutonArcher.setEnabled(true);
		}
		
		
		if(this.p.getControleur().getJoueur().getNbUniteGobelin()==0)
		{
			this.boutonGobelin.setEnabled(false);
		}	
		else
		{
			this.boutonGobelin.setEnabled(true);
		}
		
		
		if(this.p.getControleur().getJoueur().getNbUniteGeant()==0)
		{
			this.boutonGeant.setEnabled(false);
		}
		else
		{
			this.boutonGeant.setEnabled(true);
		}
		
	}
	
	public void addMenuUnite()
	{
	
		ImageIcon image = new ImageIcon("images/finies/flechePrecedent.png"); 

		image = new ImageIcon("images/finies/boutonSoldat.png"); 
		this.boutonSoldat = new JButton(image);  
		this.boutonSoldat.setFocusPainted(false);  
		this.boutonSoldat.setContentAreaFilled(false); 
		this.boutonSoldat.setBounds(60,25,80,80);
		this.add(this.boutonSoldat);
		
		image = new ImageIcon("images/finies/boutonArcher.png"); 
		this.boutonArcher = new JButton(image);  
		this.boutonArcher.setFocusPainted(false);  
		this.boutonArcher.setContentAreaFilled(false); 
		this.boutonArcher.setBounds(160,25,80,80);
		this.add(this.boutonArcher);
		
		image = new ImageIcon("images/finies/boutonGobelin.png"); 
		this.boutonGobelin = new JButton(image);  
		this.boutonGobelin.setFocusPainted(false);  
		this.boutonGobelin.setContentAreaFilled(false); 
		this.boutonGobelin.setBounds(260,25,80,80);
		this.add(this.boutonGobelin);
		
		image = new ImageIcon("images/finies/boutonGeant.png"); 
		this.boutonGeant = new JButton(image);  
		this.boutonGeant.setFocusPainted(false);  
		this.boutonGeant.setContentAreaFilled(false); 
		this.boutonGeant.setBounds(360,25,80,80);
		this.add(this.boutonGeant);
		
		this.boutonSoldat.addActionListener(this);
		this.boutonArcher.addActionListener(this);
		this.boutonGobelin.addActionListener(this);
		this.boutonGeant.addActionListener(this);

	}
	
	
	@Override
	public void actionPerformed(ActionEvent e)
	{
		Object source = e.getSource();
		
	
		if(source == this.boutonSoldat)
		{
			this.panneauMapAdversaire.placerUnite(new Soldat());
		}
		else if(source == this.boutonArcher)
		{
			this.panneauMapAdversaire.placerUnite(new Archer());
		}
		else if(source == this.boutonGobelin)
		{
			this.panneauMapAdversaire.placerUnite(new Gobelin());
		}
		else if(source == this.boutonGeant)
		{		
			this.panneauMapAdversaire.placerUnite(new Geant());
		}
	
	}

	public void paintComponent(Graphics g) 
	{
		super.paintComponent(g);		
	}

}
